博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ajax异步跨服上传图片
阅读量:5879 次
发布时间:2019-06-19

本文共 2369 字,大约阅读时间需要 7 分钟。

hot3.png

环境配置

1.导入jar包

commos-io

commos-fileupload

jersey框架包

2.配置文件上传解析器

springmvc.xml

5242880

注意:id一定要配置,底层通过id找解析器

3.创建新项目作为图片存储服务器

1.创建新tomcat服务器

2.修改端口

4.修改服务器写入权限

Serverts/Tomcat/web.xml

添加readonly:false

default
org.apache.catalina.servlets.DefaultServlet
readonly
false

页面编写

1.表单

请上传图片的大小不超过3MB

2.定义ajax异步函数

2.1导入并引入js

jquery.js

jquery.form.js

注意导入顺序,先导入jQuery再导入jQuery.form

2.2使用ajax上传图片

function submitImgSize1Upload(){//上传图片流程:把图片流对象,放入request//图片对象在表单中,提交表单//ajax提交表单:$.post()var option = {		type:'post',		url:'${pageContext.request.contextPath }/uploadPic.do',		dataType:'text',		data:{			fileName:'imgSize1File'		},		success:function(data){			//把json格式字符串转换成对象			var obj = $.parseJSON(data);			//图片回显,把图片地址设置img标签即可,图片里面回显			$("#imgSize1ImgSrc").attr("src",obj.fullPath);			//给input隐藏域标签设置一个图片服务器地址,提交保存数据库			$("#imgSize1").val(obj.fullPath);		}	};	//提交表单	$("#itemForm").ajaxSubmit(option);}

上传控制类

1.获取名称及扩展名

2.定义随机文件名

3.使用jesery客户端上传图片

4.图片回显

@RequestMapping("/upload/uploadPic")public void upload(HttpServletRequest request,String fileName,PrintWriter out){	System.out.println("1");	//把request转换成多部件请求对象	MultipartHttpServletRequest mh = (MultipartHttpServletRequest)request;	//根据文件name属性名称获取文件对象	CommonsMultipartFile file = (CommonsMultipartFile) mh.getFile(fileName);	//获取名称	String originalFilename = file.getOriginalFilename();	//截取获取文件扩展名	String extName = originalFilename.substring(originalFilename.lastIndexOf("."));		//使用毫秒+随机数定义文件名	long currentTimeMillis = System.currentTimeMillis();	//定义保存的文件名	String fn = currentTimeMillis+"";	//添加随机数	Random random = new Random();	for(int i =0 ;i < 4; i++){		fn += random.nextInt(10);	}	//添加扩展名	fn += extName;		//上传文件	//跨服务器上传文件,使用jesery客户端	Client client = Client.create();	//指定远程服务器绝对路径	WebResource resource = client.resource(Constants.IMAGE_HOST+"upload/"+fn);	//上传文件	resource.put(String.class,file.getBytes());		//图片回显	//把远程图片服务图片地址返回给页面ajax解析	//获得图片地址	String fullPath = Constants.IMAGE_HOST+"upload/"+fn;	//将地址封装到json中去	String jsonResult = "{\"fullPath\":\""+fullPath+"\"}";	//将jsonResult打印出去	out.println(jsonResult);}

问题

描述:图片上传时 403返回异常

原因:tomcat默认禁止上传,readonly没有配置

解决:配置readonly为false

转载于:https://my.oschina.net/u/3371784/blog/862717

你可能感兴趣的文章
delphi基本语法
查看>>
java中的Static class
查看>>
删除重复节点
查看>>
.net请求Webservice简单实现天气预报功能
查看>>
Loj #3056. 「HNOI2019」多边形
查看>>
【3】数据库的表设计和初始化
查看>>
Django rest framework的基本用法
查看>>
正则表达式匹配非需要匹配的字符串(标题自己都绕晕了)
查看>>
沙盒目录介绍
查看>>
260. Single Number III
查看>>
c#基础--字符串的处理_string类
查看>>
《C语言》-(流程控制:顺序结构、选择结构、循环结构)
查看>>
mobile deeplearning
查看>>
Hadoop生态圈-Kafka的完全分布式部署
查看>>
《玩转Django2.0》读书笔记-探究视图
查看>>
SOCK_STREAM & SOCK_DGRAM
查看>>
css的border的solid
查看>>
div+css实现window xp桌面图标布局(至上而下从左往右)
查看>>
0-1 背包问题
查看>>
运行Maven是报错:No goals have been specified for this build
查看>>